//
// Created by fh on 2021/6/2.
//

#ifndef CDEMO_LINKQUEUE_H
#define CDEMO_LINKQUEUE_H

#include <stdio.h>
#include <stdlib.h>
#include "CustomDefine.h"

/* 链队列:用单链表实现的队列
 * 队头指针指向头结点，队尾指针指向终端结点 */
typedef struct QNode {
    int data;
    struct QNode *next;
} QNode;

typedef struct {
    QNode *front;
    QNode *rear;
} LinkQueue;

/* 插入元素e为q的新的队尾元素 */
Status LinkQueueEnQueue(LinkQueue *q,int e);
/* 若队列不空，删除q的队头元素，用e返回其值 */
Status LinkQueueDeQueue(LinkQueue *q,int *e);
/* 遍历链队列 */
Status LinkQueueDisplay(const LinkQueue *q);
/* 链队列生成和初始化 */
LinkQueue *LinkQueueCreateAndInit();
/* 测试demo */
void linkQueueTestDemo();


#endif //CDEMO_LINKQUEUE_H
